package com.mbc.mapper;


import com.mbc.dto.DetailsActivityInfoDTO;
import com.mbc.dto.InserTLoveBaseActivityDTO;
import com.mbc.vo.DetailsActivityInfoVO;
import com.mbc.vo.SimpleActivityVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDateTime;
import java.util.ArrayList;

/**
 * <p>
 * 爱心基地活动表 Mapper 接口
 * </p>
 *
 * @author suimeng
 * @since 2024-04-19
 */

@Mapper
public interface LoveBaseActivityMapper {

    /**
     * 获取最大的活动id
     *
     * @return {@link Integer}
     */
    @Select("select max(activity_id) from mbc_love_base_activity for update ")
    Integer getByMaxActivityId();

    /**
     * 新增爱心基地活动1
     *
     * @param userId                    用户 ID
     * @param now                       现在
     * @param inserTLoveBaseActivityDTO inser tlove base 活动 DTO
     * @param signId                    签名 ID
     * @return int
     */
    Integer insertLoveActivity(Integer maxActivityId,Integer userId, LocalDateTime now, String signId,
                           InserTLoveBaseActivityDTO inserTLoveBaseActivityDTO);


    /**
     * 分页查询所有活动
     *
     * @param offest Offest
     * @param limit  限制
     * @return {@link ArrayList}<{@link SimpleActivityVO}>
     */
    ArrayList<SimpleActivityVO> getBySimpleActivity(Integer offest,Integer limit);


    /**
     * 根据活动id查询爱心基地活动详细信息
     *
     * @param activityId 活动 ID
     * @return {@link DetailsActivityInfoVO}
     */
    DetailsActivityInfoVO getDetailsActivityInfo(Integer activityId);

    /**
     * 根据活动id或名称查询爱心基地活动信息
     *
     * @param limit                  限制
     * @param offest                 Offest
     * @param detailsActivityInfoDTO 详细信息 活动信息 DTO
     * @return {@link ArrayList}<{@link SimpleActivityVO}>
     */
    ArrayList<SimpleActivityVO> getByIdSimpleActivity(Integer limit, Integer offest, DetailsActivityInfoDTO detailsActivityInfoDTO);

    /**
     * 新增爱心活动浏览量
     *
     * @param activityId 活动 ID
     * @return int
     */
    int updateViewNumber(Integer activityId);

    /**
     * 新增爱心活动点赞量
     *
     * @param activityId 活动 ID
     * @return int
     */
    int updateLikesNumber(Integer activityId);

    /**
     * 更新爱心活动参与人数
     *
     * @param activityId 活动 ID
     * @return int
     */
    int updateParticipationNumber(Integer activityId);
}
